맨위로가기

울프럼 언어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

울프럼 언어는 1988년 매스매티카의 초기 버전에 포함된 프로그래밍 언어이다. 이 언어는 기호적 측면을 통해 컴퓨터 대수 시스템을 구성하며, 적분, 미분, 행렬 조작, 미분 방정식 풀이 등 다양한 기능을 제공한다. 2013년 라즈베리 파이 사용자에게 무료로 제공되면서 공식 명칭을 얻었으며, 유니티 게임 엔진과의 호환성을 지원하여 게임 개발에도 활용된다. 울프럼 언어는 LISP의 M-표현식과 유사한 문법을 가지며, 함수 정의, 패턴 매칭, 순수 함수, 절차적 프로그래밍 등 다양한 프로그래밍 패러다임을 지원한다. 울프럼 리서치에서 공식 및 참조 구현을 제공하며, 오픈 소스 파서도 공개되었다. 또한, 영화 컨택트 제작에 사용되어 외계어 제작에 기여하기도 했다.

더 읽어볼만한 페이지

  • 1988년 개발된 프로그래밍 언어 - Tcl
    Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다.
  • 1988년 개발된 프로그래밍 언어 - 모듈라-3
    모듈라-3는 1986년 개발된 프로그래밍 언어로, 모듈, 인터페이스, 제네릭, 가비지 컬렉션 등의 특징을 가지며, 자바, 파이썬 등 여러 언어에 영향을 미쳤다.
  • 컴퓨터 대수학 시스템 - 울프럼 알파
    울프럼 알파는 자연어 처리 기반 지식 엔진으로, 텍스트 입력을 통해 질문에 대한 답변과 복잡한 계산, 통계 분석, 금융 계산 등의 연산 결과를 제공하고 시각화한다.
  • 컴퓨터 대수학 시스템 - 리듀스 (컴퓨터 대수학 시스템)
    REDUCE는 1960년대 앤서니 C. 허언에 의해 개발된 컴퓨터 대수학 시스템으로, Standard LISP로 구현되었고, ALGOL과 유사한 구문인 RLISP를 사용하며, 다양한 운영 체제에서 사용 가능하고, 2008년 오픈 소스화되어 수정된 BSD 라이선스에 따라 배포된다.
  • 배열 프로그래밍 언어 - GNU 옥타브
    GNU 옥타브는 MATLAB과 높은 호환성을 가지며 수치 해석 계산을 위해 사용되는 자유-오픈 소스 소프트웨어이다.
  • 배열 프로그래밍 언어 - NumPy
    NumPy는 파이썬에서 다차원 배열을 효과적으로 다루기 위한 라이브러리로, C API를 제공하여 외부 라이브러리와 연동을 지원하며, 다양한 연산 기능과 멀티스레딩을 통한 성능 향상을 제공한다.
울프럼 언어 - [IT 관련 정보]에 관한 문서
개요
이름울프럼 언어
로마자 표기Ulpeureom Eoneo
종류프로그래밍 언어 및 환경
개발울프럼 리서치
디자이너스티븐 울프럼
최초 출시1988년
최신 버전14.1
최신 버전 출시일2024년 7월 31일
형식멀티 패러다임: 항 재작성, 함수형, 절차적, 배열
자료형동적, 강한
구현체매스매티카
울프럼 개발 플랫폼
Mathics
Expreduce
MockMMA
영향 받은 언어APL
C
C++
FORTRAN
Lisp
Pascal
Prolog
Schoonschip
Simula
스몰토크
SMP
영향을 준 언어Jupyter
Clojure
Julia
운영체제크로스 플랫폼
라이선스사유 (플랫폼에 따라 무료로 사용 가능)
파일 확장자.nb, .m, .wl
웹사이트공식 웹사이트
활용 분야
주요 분야컴퓨터 대수
수치 계산
정보 시각화
통계
사용자 인터페이스

2. 역사

울프럼 언어는 1988년 매스매티카의 초기 버전에 포함되었다.[11] 이 언어 엔진은 기호적인 특성으로 인해 컴퓨터 대수 시스템으로 분류된다. 적분, 미분, 행렬 조작, 미분 방정식 풀이 등에 사용될 수 있다. 초기 버전에는 테오도르 그레이의 특허를 기반으로 한 노트북 모델과 소리, 이미지 포함 기능이 도입되었다.[12] 이후 3D 모델링과 같은 복잡한 작업을 위한 기능도 추가되었다.[13]

2013년, 울프럼 연구소는 라즈베리 파이 사용자에게 무료로 언어 엔진 버전을 제공하기로 결정했고, 이때 '울프럼 언어'라는 이름이 공식적으로 채택되었다.[14] 이는 라즈베리 파이 재단이 초보자용으로 제공하는 소프트웨어 번들에 포함되었으나, 울프럼 언어의 독점적인 특성으로 인해 논란이 일기도 했다.[15] CES 2014에서 인텔 에디슨 보드가 소개된 후 울프럼 언어를 포팅하려는 계획이 발표되었지만, 실제로 출시되지는 않았다.[16] 2019년에는 유니티 게임 엔진과 호환되는 링크가 추가되어 게임 개발자들이 울프럼 언어의 고급 기능을 활용할 수 있게 되었다.[17][18]

2. 1. 명칭

2013년 6월부터 '울프럼 언어(Wolfram Language)'라는 명칭이 공식적으로 사용되기 시작했다.[27][28][34][42] 그 이전에는 30년 이상 매스매티카 프로그래밍 언어를 지칭하는 이름으로 사용되었다.[34][42] 관계자들 사이에서는 "M" 등의 다른 이름도 사용되었으며, "Lingua", "Express" 등이 공식 명칭으로 검토되었다.[35]

3. 문법

울프럼 언어 구문은 1960년대 LISP의 M-표현식과 유사하며, 중위 연산자와 "함수 표기법" 함수 호출을 지원한다.[19] 기본적으로 리스프의 M식과 유사한 형식을 가지지만, 다양한 신택스 슈가를 통해 구문을 친숙한 형식으로 표현할 수 있다.

울프럼 언어의 예
신택스 슈가에 의한 표현 (InputForm)기본 형식 (FullForm)
(a + b) * cTimes[Plus[a,b],c]
{1, 2, 3}List[1, 2, 3]
f[x, y]f[x, y]


3. 1. 기초

기본적인 산술식은 중위 표기법을 사용하여 작성한다.

```mathematica

(* 이것은 주석입니다. *)

4 + 3

(* = 7 *)

1 + 2 * (3 + 4)

(* = 15 *)

(* 곱셈은 생략될 수 있습니다: 1 + 2 (3 + 4) *)

(* 나눗셈은 유리수를 반환합니다: *)

6 / 4

(* = 3/2 *)

```

함수 호출은 대괄호로 표시된다.

```mathematica

Sin[Pi]

(* = 0 *)

(* 이것은 유리수를 부동 소수점으로 변환하는 함수입니다: *)

N[3 / 2]

(* = 1.5 *)

```

리스트는 중괄호로 묶는다.

```mathematica

Oddlist={1,3,5}

(* = {1,3,5} *)

```

울프럼 언어는 기본적으로 리스프의 M식과 유사한 형식이다. 많은 신택스 슈가가 준비되어 있기 때문에, 구문을 친숙한 형식으로 표현할 수 있다.

울프럼 언어의 예
신택스 슈가에 의한 표현 (InputForm)기본 형식 (FullForm)
(a + b) * cTimes[Plus[a,b],c]
{1, 2, 3}List[1, 2, 3]
f[x, y]f[x, y]


3. 2. 신택스 슈가 (Syntactic Sugar)

울프럼 언어는 표현식을 더 인간 친화적으로 표현하기 위해 M-표현식 패러다임에서 벗어날 수 있다.

  • 이 언어는 조판된 표현식을 위한 `TeXForm` 및 언어 입력을 위한 `InputForm`을 포함하여 여러 서식 규칙을 사용한다.
  • 함수는 접두사 표현 `@` 및 접미사 표현 `//`를 사용하여 적용할 수도 있다.
  • 도함수는 작은 따옴표 `'`로 표시할 수 있다.
  • 중위 연산자 자체는 함수 표기법 시스템에 대한 "신택스 슈가"로 간주된다.[19]


`FullForm` 포맷터는 입력을 디슈가링(desugaring)한다.

울프럼 언어는 기본적으로 리스프의 M식과 유사한 형식이다. 많은 신택스 슈가가 준비되어 있기 때문에, 구문을 친숙한 형식으로 표현할 수 있다.

울프럼 언어의 예
신택스 슈가에 의한 표현 (InputForm)기본 형식 (FullForm)
`(a + b) * c``Times[Plus[a,b],c]`
`{1, 2, 3}``List[1, 2, 3]`
`f[x, y]``f[x, y]`


3. 3. 함수 정의

울프럼 언어에서 함수는 패턴에 관한 변환 규칙으로 주어진다. `:=`는 지연 대입 연산자로, 할당된 값은 필요할 때마다 다시 평가된다. `x_`는 모든 식에 일치하는 패턴으로, x라는 이름으로 참조된다.[20]

```mathematica

f[x_] := x ^ 2

```

위 코드에서 `:=`는 지연 대입 연산자이며, 이로 인해 할당된 값은 값이 필요할 때마다 다시 평가된다. `x_`는 모든 식에 일치하는 패턴으로 x라는 이름으로 참조된다.

3. 4. 순수 함수 (익명 함수)

울프럼 언어에서는 익명 함수가 준비되어 있으며, 순수 함수라고 불린다.

1을 더하는 순수 함수는 다음과 같이 표현된다.

```text

(#+1)&

```

위 식에 50을 입력하면 51로 평가된다.

3. 5. 패턴 매칭

울프럼 언어에서 함수는 치환을 위한 단순한 패턴의 한 예이다.

```mathematica

F[x_] := x ^ 0

```

위 코드에서 `:=`는 "SetDelayed 연산자"이므로, x는 즉시 검색되지 않는다. `x_`는 `Pattern[x, Blank[]]`의 문법 설탕(syntax sugar)이며, 이는 나머지 평가에서 x를 대체할 임의의 값에 대한 "빈칸"을 의미한다.

버블 정렬의 반복은 다음과 같이 표현할 수 있다.

```mathematica

sortRule := {x___,y_,z_,k___} /; y>z -> {x,z,y,k}

(* Rule[Condition[List[PatternSequence[x, BlankNullSequence[]], Pattern[y, Blank[]], Pattern[z, Blank[]], PatternSequence[k, BlankNullSequence[]]], Greater[y, z]], List[x, z, y, k]] *)

```

위 코드에서 `/;` 연산자는 "조건"을 나타내며, 규칙은 `y>z`인 경우에만 적용된다. 세 개의 밑줄(`___`)은 null이 될 수 있는 시퀀스를 나타내는 `BlankNullSequence[]`의 문법이다.

`//.` 연산자(ReplaceRepeated)를 사용하면 더 이상 변경이 없을 때까지 규칙을 반복적으로 적용할 수 있다.

```mathematica

{ 9, 5, 3, 1, 2, 4 } //. sortRule

(* = ReplaceRepeated[{ 9, 5, 3, 1, 2, 4 }, sortRule] *)

(* = {1, 2, 3, 4, 5, 9} *)

```

패턴 매칭 시스템은 규칙 기반의 적분 및 미분 생성을 용이하게 한다. 다음은 Rubi 패키지 규칙에서 발췌한 내용이다.[20]

```mathematica

(* 역수 규칙 *)

Int[1/x_,x_Symbol] :=

Log[x];

(* 거듭제곱 규칙 *)

Int[x_^m_.,x_Symbol] :=

x^(m+1)/(m+1) /;

FreeQ[m,x] && NeQ[m,-1]

```

울프럼 언어는 부분식에 대해 패턴 매칭을 수행하고 치환을 수행하는 구문을 제공한다. `f[a] /. a->b`를 평가하면 `f[b]`가 출력된다.

3. 6. 절차적 프로그래밍

울프럼 언어는 절차적 프로그래밍도 지원하지만, 대부분의 경우 필요하지 않다.

다음은 C 언어 프로그램 예시이다.

```c

int func(int n){

int i,r=0;

for(i=1;i
r+=i*i;

}

return r;

}

```

위 코드는 매스매티카에서는 다음과 같이 표현된다.

```mathematica

func[n_]:=Module[{i,r=0},

For[i=0,i
r+=i*i;

];

r

]

4. 구현

울프럼 언어의 공식 및 참조 구현은 매스매티카(Mathematica) 및 관련 온라인 서비스에 있으며, 이는 비공개 소스이다.[21] 하지만 울프럼 리서치는 오픈 소스 MIT 라이선스 하에 이 언어의 파서를 출시했다.[22] 이 파서는 원래 C++(C++)로 개발되었지만 2023년 러스트(Rust)로 다시 작성되었다. 참고 서적은 오픈 액세스이다.[23]

울프럼 언어가 30년 이상 존재해 오면서, 여러 개의 오픈 소스 제3자 구현도 개발되었다. 리처드 패트먼(Richard Fateman)의 1991년 MockMMA는 최초의 재구현이었고, 울프럼으로부터 중단 명령을 받았다는 점에서 역사적으로 주목할 만하다. 2020년 4월 기준으로 현재 유지 관리되고 있는 현대적인 구현으로는 자바(Java)의 Symja, Go(Golang)의 expreduce, 그리고 심파이(SymPy) 기반의 매틱스(Mathics)가 있다.[24] 이러한 구현은 울프럼의 온라인 "지식 베이스" 기능이 아닌, 핵심 언어와 그것이 의미하는 컴퓨터 대수 시스템에 중점을 둔다.

2019년에[25] 울프럼 리서치는 프리웨어 Wolfram Engine을 출시하여 비상업적 소프트웨어에서 프로그래밍 라이브러리로 사용할 수 있도록 했다. 이 개발자 전용 엔진은 매스매티카 평가기의 명령줄 셸(제한된 수의 커널 포함)을 제공하며, 웹을 통해 가입 및 라이선스 활성화를 필요로 한다. 무료로 제공되는 주피터 노트북/랩 프로젝트는 노트북을 다양한 언어에 연결하기 위한 프로토콜(ZMQ)을 제공하며, 이는 텍스트 전용 CLI 인터페이스 대신 [https://github.com/WolframResearch/WolframLanguageForJupyter Wolfram Kernel for Jupyter]를 통해 사용할 수 있다.[26]

5. 대중문화

스티븐 울프럼과 크리스토퍼 울프럼은 영화 컨택트 제작에 참여하여 울프럼 언어를 사용해 외계인의 언어를 제작했다.[43][44]

참조

[1] 웹사이트 The Story Continues: Announcing Version 14 of Wolfram Language and Mathematica https://writings.ste[...] 2024-07-31
[2] 웹사이트 Tini Veltman (1931–2021): From Assembly Language to a Nobel Prize—Stephen Wolfram Writings https://writings.ste[...] 2021-01-22
[3] 서적 The Mathematica® Programmer Academic Press, Inc.
[4] 웹사이트 Wolfram Language Q&A https://www.wolfram.[...] Wolfram Research 2016-12-05
[5] 뉴스 The Scientific Paper Is Obsolete https://www.theatlan[...] 2018-04-10
[6] 웹사이트 Clojure Bookshelf https://www.amazon.c[...] 2020-05-06
[7] 웹사이트 Wolfram Open Code, Open Source, Open Data, Open Resources http://www.wolfram.c[...] 2023-02-03
[8] 웹사이트 Notes for Programming Language Experts about Wolfram Language https://www.wolfram.[...] Wolfram.com 2015-11-05
[9] 웹사이트 What Should We Call the Language of Mathematica?—Stephen Wolfram Blog https://blog.stephen[...] Blog.stephenwolfram.com 2015-11-05
[10] 웹사이트 Celebrating Mathematica's First Quarter Century—Wolfram Blog https://blog.wolfram[...] Blog.wolfram.com 2015-11-05
[11] 문서 Wolfram (1988). Mathematica, a System for Doing Mathematics By Computer.
[12] 뉴스 Thoughts on Mathematica http://bit-player.or[...] 1990-01-01
[13] 웹사이트 Wolfram Language & System Documentation Center https://reference.wo[...] Reference.wolfram.com 2015-11-05
[14] 웹사이트 Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog https://blog.wolfram[...] Blog.wolfram.com 2015-11-05
[15] 웹사이트 Premium Mathematica software free on budget Raspberry Pi - CNET https://www.cnet.com[...] News.cnet.com 2015-11-05
[16] 웹사이트 Intels Edison: Pentium-System im Format einer SD-Karte | heise online https://www.heise.de[...] Heise.de 2015-11-05
[17] 웹사이트 The Wolfram Language will soon be integrated into Unity https://gamasutra.co[...] Gamasutra 2015-11-05
[18] 웹사이트 Is there a way to use Wolfram Language in Unity3D? https://community.wo[...] Wolfram 2017-04-11
[19] 웹사이트 FullForm https://reference.wo[...]
[20] 웹사이트 Welcome to Rubi, the Rule-based Integrator https://rulebasedint[...]
[21] 웹사이트 Why Wolfram Tech Isn't Open Source—A Dozen Reasons—Wolfram Blog https://blog.wolfram[...] 2019-04-02
[22] 웹사이트 codeparser: Parse Wolfram Language source code as abstract syntax trees (ASTs) or concrete syntax trees (CSTs) https://github.com/W[...] Wolfram Research, Inc.
[23] 웹사이트 Open Materials from Wolfram: Open Code, Open Source, Open Data, Open Resources https://www.wolfram.[...]
[24] 웹사이트 Is there an open source implementation of Mathematica-the-language? https://mathematica.[...]
[25] 웹사이트 Launching Today: Free Wolfram Engine for Developers—Stephen Wolfram Writings https://writings.ste[...] 2019-05-21
[26] 웹사이트 Free Wolfram Engine for Developers https://www.wolfram.[...] 2021-01-19
[27] 웹사이트 Wolfram announces 'most important' project: a programming language that models the world https://www.theverge[...] 2023-09-21
[28] 웹사이트 Something Very Big Is Coming: Our Most Important Technology Project Yet—Stephen Wolfram Writings https://writings.ste[...] 2023-09-21
[29] 서적 The Mathematica® Programmer Academic Press, Inc.
[30] 웹사이트 Wolfram Language Q&A https://www.wolfram.[...] Wolfram Research 2016-12-05
[31] 웹사이트 Why We Created Julia http://julialang.org[...] Julia Language 2016-12-01
[32] 뉴스 Stephen Wolfram Aims to Democratize His Software http://bits.blogs.ny[...] The New York Times 2015-12-14
[33] 웹사이트 Notes for Programming Language Experts about Wolfram Language http://www.wolfram.c[...] Wolfram.com 2015-11-05
[34] 웹사이트 Celebrating Mathematica’s First Quarter Century—Wolfram Blog http://blog.wolfram.[...] Blog.wolfram.com 2015-11-05
[35] 웹사이트 What Should We Call the Language of Mathematica?—Stephen Wolfram Blog http://blog.stephenw[...] Blog.stephenwolfram.com 2015-11-05
[36] 웹사이트 Wolfram Language & System Documentation Center http://reference.wol[...] Reference.wolfram.com 2015-11-05
[37] 웹사이트 Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog http://blog.wolfram.[...] Blog.wolfram.com 2015-11-05
[38] 웹사이트 Premium Mathematica software free on budget Raspberry Pi - CNET http://news.cnet.com[...] News.cnet.com 2015-11-05
[39] 웹사이트 Intels Edison: Pentium-System im Format einer SD-Karte | heise online http://www.heise.de/[...] Heise.de 2015-11-05
[40] 웹사이트 MSN.com - Hotmail, Outlook, Skype, Bing, Latest News, Photos & Videos http://tech.ca.msn.c[...] Tech.ca.msn.com 2015-11-05
[41] 웹사이트 The Wolfram Language will soon be integrated into Unity http://gamasutra.com[...] Gamasutra 2015-11-05
[42] 웹사이트 Stephen Wolfram Says He Has An Algorithm For Everything — Literally http://readwrite.com[...] Readwrite.com 2015-11-05
[43] 뉴스 SF映画「メッセージ」の異星人の恒星間航行は非常に高いレベルで考証済み、監修したのは理論物理学者であのMathematicaの生みの親スティーブン・ウルフラム https://gigazine.net[...] Gigazine 2016-11-16
[44] 뉴스 How Arrival's Designers Crafted a Mesmerizing Language https://www.wired.co[...] Wired 2016-11-16
[45] 웹인용 Revision History https://www.wolfram.[...]
[46] 웹인용 Tini Veltman (1931–2021): From Assembly Language to a Nobel Prize—Stephen Wolfram Writings https://writings.ste[...] 2021-01-22
[47] 서적 The Mathematica® Programmer Academic Press, Inc.
[48] 웹인용 Wolfram Language Q&A https://www.wolfram.[...] Wolfram Research 2016-12-05
[49] 뉴스 The Scientific Paper Is Obsolete https://www.theatlan[...] 2018-04-10
[50] 웹인용 Clojure Bookshelf https://www.amazon.c[...] 2020-05-06
[51] 웹인용 Notes for Programming Language Experts about Wolfram Language https://www.wolfram.[...] Wolfram.com 2015-11-05
[52] 웹인용 What Should We Call the Language of Mathematica?—Stephen Wolfram Blog https://blog.stephen[...] Blog.stephenwolfram.com 2015-11-05
[53] 웹인용 Celebrating Mathematica's First Quarter Century—Wolfram Blog https://blog.wolfram[...] Blog.wolfram.com 2015-11-05



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com